$(function () {

    /* treeview -> 全选按钮 */
    $("input[name=select-all]").click(function(){
        if($(this).is(':checked')==true){
            $("input[name=checkbox]").prop("checked", true);
        }else{
            $("input[name=checkbox]").prop("checked", false);
        }
    });

    /* treeview -> 点击checkbox所在th时，阻止冒泡 */
    $(".checkbox-cell").click(function(){
        event.stopPropagation();
    });

    /* treeview -> 点击checkbox时，阻止冒泡 */
    $(".checkbox").click(function(event){
        event.stopPropagation();
    });

    /* treeview -> 点击信息行，进入某一行的formview页面 */
    $(".tbody-line").click(function(){
        var context = fn_GetContext();
        context.id = $(this).attr("data-id"); //重新设置id的值
        context.field = $("select[name=field]").val();
        context.offset = $(this).attr("offset");
        var url = "?";
        for(var k in context){
            url += k + "=" + context[k] + "&";
        }
        location.href = '/admin/gzh/detail' + url;
    });

    /* treeview -> 表头字段进行排序 */
    $(".list-header").click(function(){
        var field = $(this).attr("field");
        var sort = $(this).attr("sort");
        sort = (sort=="asc"?"desc":"asc");
        $("input[name=order_field]").val(field);
        $("input[name=order_sort]").val(sort);
        $(".search-form").submit();
    });
});

/**********************  listview  *******************************/
/**
 * listview -> 上一页、下一页
 * @param page
 * @constructor
 */
function PageJump(page){
    $("input[name=page]").val(page);
    $(".search-form").submit();
}

/**
 * listview -> 删除信息
 */
function action_del(){
    var msg = "您确定要删除选中数据吗？";
    if (confirm(msg)==true) {
        var dataIds = new Array();
        $("input[name=checkbox]").each(function(){ //由于复选框一般选中的是多个,所以可以循环输出
            if($(this).is(":checked")){
                dataIds.push( parseInt($(this).attr("data-id")));
            }
        });
        if(dataIds.length==0){
            alert("请选择要删除的对象");
            return false;
        }
        $.ajax({
            url: "/admin/gzh/ajax_del",
            data: {info: dataIds}, type: "POST", dataType: "JSON",
            success: function (data) {
                if (data.status) {
                    location.reload();
                    fn_delRows(dataIds);
                } else {
                    alert(data.info);
                }
            }
        });
    }
}

/**
 * 辅助函数，listview，删除信息行
 * @param dataIds
 */
function fn_delRows(dataIds){
    for(var i=0; i<dataIds.length; i++){
        $("tr[data-id="+dataIds[i]+"]").remove();
    }
}


/**********************  formview  *******************************/
/**
 * formview -> 编辑
 */
function action_edit(){
    //切换界面到编辑模式
    fn_SwithMode("EDIT");

    //将type=text字段信息替换
    var html, value;
    for(var i=0; i<fields.length; i++){
        value = $("td[field="+fields[i]+"]").html(); //获取单元格中对应字段的值
        if(fields[i]=="wxrq") {
            if(!value){
                var myDate = new Date();
                var month = myDate.getMonth()+1;
                month=month<10?"0"+month:month
                value = myDate.getFullYear() + '/' + month + '/' + myDate.getDate();
            }
            html = '<input name="'+fields[i]+'" type="text" value="'+value+'" />';
        }else if(fields[i]=="wxzt"){ //todo
            html = '<select name="'+fields[i]+'"><option></option>';
            for(var j=0; j<options.length; j++){
                if(value==options[j].name){
                    html += '<option selected="selected" value="'+options[j].id+'">'+options[j].name+'</option>';
                }else{
                    html += '<option value="'+options[j].id+'">'+options[j].name+'</option>';
                }
            }
            html += '</select>';
        }else if(fields[i]=="bxms"){ //todo
            //将type=textarea字段信息替换
            value = typeof(value)=="undefined"?"":value;
            html = '<textarea name="'+fields[i]+'" placeholder="请输入备注信息">'+value+'</textarea>';
        }else{
            html = '<input name="'+fields[i]+'" type="text" value="'+value+'" />';
        }
        $("td[field="+fields[i]+"]").html(html);
    }
}

/**
 * formview -> 保存
 */
function action_save(){
    if(fn_FormSubmitCheck("edit")){
        var data = fn_GetFormValue();
        if(fn_IsFormUpdated(data)==false){ //表单内容没有修改
            fn_UpdateField(data);
            fn_SwithMode("READ"); //切换界面到只读模式
            return true;
        }

        $.ajax({
            url:"/admin/gzh/ajax_UpdateInfoById",
            data: {id: $("input[name=id]").val(), data:data}, type:"POST", dataType:"JSON",
            success: function(result){
                if(result.status){
                    fn_UpdateField(data);
                    fn_UpdateOldField(data);
                    fn_SwithMode("READ"); //切换界面到只读模式
                    location.reload();
                }else{
                    alert(result.info);
                }
            }
        });
    }
}

/**
 * formview -> 放弃编辑
 */
function action_abort(){
    for(var i=0; i<fields.length; i++){
        var oldValue = fn_GetOldValues(fields[i]);
        fn_SetValues(fields[i], oldValue);
    }
    //显示编辑按钮，隐藏保存按钮
    $(".btn-group-edit").show();
    $(".btn-group-save").hide();
}

/**
 * formview -> 上一条、下一条
 * @param dataId
 * @param offset
 * @constructor
 */
function ItemJump(dataId, offset){
    var context = fn_GetContext();
    context.id = dataId;
    context.offset = offset;
    var url = fn_JsonToUrl(context);
    location.href = '/admin/gzh/detail?' + url;
}

/**
 *  formview -> 复制信息
 */
function action_copy(){
    var copy  = {action:"copy", id:$("input[name=id]").val()};
    var url = fn_JsonToUrl(copy);
    location.href = "/admin/gzh/add?"+url;
}

/**
 * formview -> 删除信息
 */
function action_del2(){
    var msg = "您确定要删除选中数据吗？";
    if (confirm(msg)==true) {
        var id = $("input[name=id]").val();
        var offset = $("input[name=offset]").val();
        var context = fn_GetContext();
        $.ajax({
            url: "/admin/gzh/ajax_del2",
            data: {
                id: id, offset: offset, value: context.value, field: context.field,
                order_field: context.order_field, order_sort: context.order_sort
            },
            type: "POST", dataType: "JSON",
            success: function (data) {
                if (!data.status) {
                    alert(data.info);
                    return false;
                }
                if (data.info == null) { //数据全部被删除，则跳转到listview
                    location.href = "/admin/gzh/index";
                } else {
                    //todo 这里还需要将上下文信息以get方法进行传递
                    alert("删除成功，页面将自动跳转到下一条记录");
                    context.id = data.info;
                    var url = fn_JsonToUrl(context);
                    location.href = "/admin/gzh/detail?" + url;
                }
            }
        });
    }
}

/**
 *  formview -> 提交添加信息表单
 */
function submitForm(){
    if(fn_FormSubmitCheck("add")){
        $("#repairForm").submit();
    }
}

/**
 * formview -> 切换模式（READ/EDIT）
 */
function fn_SwithMode(mode){
    if(mode=="READ"){
        //隐藏编辑按钮，显示保存按钮
        $(".btn-group-edit").show();
        $(".btn-group-save").hide();
    }else if(mode=="EDIT"){
        //隐藏编辑按钮，显示保存按钮
        $(".btn-group-edit").hide();
        $(".btn-group-save").show();
    }
}

/**
 * 通过ID来获取NAME（option）
 * @param id
 * @param options
 * @returns {null}
 */
function fn_GetOptionNameById(id, options) {
    for(var i=0; i<options.length; i++){
        if(options[i].id==id){
            return options[i].name;
        }
    }
    return null;
}


/**
 * formview -> 修改成功后，更新前端保存的原字段值
 */
function fn_UpdateField(data){
    for(var i=0; i<fields.length; i++){
       fn_SetValues(fields[i], data[fields[i]]);
    }
}

/**
 * formview -> 修改成功后，更新前端保存的原字段值
 */
function fn_UpdateOldField(data){
    for(var i=0; i<fields.length; i++){
        $("input[name=old_"+fields[i]+"]").val(data[fields[i]]);
    }
}

/**
 * formview -> 表单提交验证
 */
function fn_GetFormValue(){
    var result = {};
    for(var i=0; i<fields.length; i++){
        if(fields[i]=="wxzt"){ //todo
            result[fields[i]] = $("select[name="+fields[i]+"]").val();
        }else if(fields[i]=="bxms"){ //todo
            result[fields[i]] = $("textarea[name="+fields[i]+"]").val();
        }else{
            result[fields[i]] = $("input[name="+fields[i]+"]").val();
        }
    }
    return result;
}

/**
 * formview -> 表单提交验证
 */
function fn_FormSubmitCheck(type){ //todo

    if(type=="add"){
        /*if($("input[name=house_addr]").val()){
            alert("房源地址不能为空");
            return false;
        }*/
        if(!$("input[name=bxr]").val()){
            alert("报修人不能为空");
            return false;
        }
        if(!$("input[name=bxdh]").val()){
            alert("报修电话不能为空");
            return false;
        }
        if(!$("input[name=bxrq]").val()){
            alert("报修日期不能为空");
            return false;
        }
        if(!$("textarea[name=bxms]").val()){
            alert("报修描述不能为空");
            return false;
        }
        if(!$("input[name=xc1_Img]").val()){
            alert("图片描述1不能为空");
            return false;
        }
        if(!$("input[name=xc2_Img]").val()){
            alert("图片描述2不能为空");
            return false;
        }
    }
    return true;
}

/**
 * 验证表单内容是否被改动，false没有改动，true改动
 * @param data
 * @returns {boolean}
 */
function fn_IsFormUpdated(data) {
    for(var i=0; i<fields.length; i++){
        var oldValue = fn_GetOldValues(fields[i]);
        if(data[fields[i]] != oldValue){
            return true;
        }
    }
    return false;
}

/**
 * 辅助函数，formview，获取旧数据的值
 * @param field
 * @returns {*|jQuery}
 */
function fn_GetOldValues(field){
    return $("input[name=old_"+field+"]").val();
}

/**
 * 辅助函数，formview，设置字段的值
 * @param field
 * @param value
 */
function fn_SetValues(field, value){
    if(field=="community_id"){  //todo
        value = fn_GetOptionNameById(value, options);
    }
    $("td[field="+field+"]").html(value);
}

/**
 * 辅助方法，formview，将json格式化成url参数
 * @param json
 * @returns {string}
 */
function fn_JsonToUrl(json){
    var url = "";
    for(var k in json){
        url += (k + "=" + json[k] + "&");
    }
    return url;
}

/**
 * 辅助函数，formview，获取上下文信息
 * @returns {{id: (*|jQuery), field: (*|jQuery), value: (*|jQuery), page: (*|jQuery), order_field: (*|jQuery), order_sort: (*|jQuery), offset: (*|jQuery)}}
 */
function fn_GetContext(){
    return {
        id : $("input[name=id]").val(),
        field : $("input[name=field]").val(),
        value : $("input[name=value]").val(),
        page : $("input[name=page]").val(),
        order_field : $("input[name=order_field]").val(),
        order_sort : $("input[name=order_sort]").val(),
        offset : $("input[name=offset]").val(),
        ctime1: $("input[name=ctime1]").val(),
        ctime2 : $("input[name=ctime2]").val(),
        client : $("select[name=client]").val(),
        type : $("select[name=type]").val(),
        service : $("select[name=service]").val(),
        state : $("select[name=state]").val(),
        option : $("select[name=option]").val(),
        keyword : $("input[name=keyword]").val(),
    }
}

function showDlg(dlg){
    $("." + dlg).show();
}

function closeDialog(){
    $(".dialog").hide();
}

